package com.xiong.selenium.util;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

import java.util.List;

public class XpathUtil {

    private WebDriver webDriver;

    public XpathUtil(WebDriver webDriver) {
        this.webDriver = webDriver;
    }

    /**
     * 通过class 获取所有元素
     * @param className classname
     * @return
     */
    public List<WebElement> getByClassName(String className) {
        List<WebElement> webElementList=
                webDriver.findElements(By.className(className));
        return webElementList;
    }


    /**
     * 获取以某个classname开头的所有元素
     * @param className class名字
     * @return
     */
    public List<WebElement> getByStartWithClassName(String className) {
        List<WebElement> webElementList=
                webDriver.findElements(By.xpath("//input[starts-with(@class,'"+className+"')]"));
        return webElementList;
    }

    /**
     * 选取拥有属性名为 attrName 的所有元素
     * @param attrName 属性名
     * @return
     */
    public List<WebElement> getByAttrName(String attrName) {
        List<WebElement> webElementList=
                webDriver.findElements(By.xpath("//@"+attrName+""));
        return webElementList;
    }

    /**
     * 选取拥有属性值为 attrValue 的所有元素
     * @param attrValue 属性值
     * @return
     */
    public  List<WebElement> getByAttrValue(String attrValue){
        List<WebElement> webElementList=
                webDriver.findElements(By.xpath("//@*="+attrValue+""));
        return webElementList;
    }

    /**
     * 选取拥有标签名为 tag 的所有元素
     * @param tagName 标签值
     * @return
     */
    public  List<WebElement> getByTagName(String tagName) {
        List<WebElement> webElementList=
                webDriver.findElements(By.xpath("//"+tagName+""));
        return webElementList;
    }

    /**
     * 根据id值获取元素
     * @param id
     * @return
     */
    public List<WebElement> getById(String id){
        List<WebElement> webElementList=
                webDriver.findElements(By.xpath("//*[@id="+id+"]"));
        return webElementList;
    }
}
